#ifndef CONSTRAINT_H_
#define CONSTRAINT_H_

#include "schedule.h"
#include <string>

/// An interface for schedule constraints testing.  The core functionality is
/// expressed by the consider() member predicate.
class Constraint {
public:
	virtual ~Constraint() { };

    /// \return Returns true if the given schedule agrees with the constraint.
	virtual bool consider(const Schedule&) = 0;
    virtual std::string to_string() = 0;
};

#endif
